1. Field of the Invention
The present invention generally relates to processors in data processing systems and in particular to the binary (or object code) representation of programs and the way in which the binary representation is used for carrying out computation in such processors. More specifically, the invention relates to a novel binary representation of programs, and the apparatus and methods for fetching and executing the new enhanced binary representation in a processor, thereby enhancing the program's execution characteristics such as execution time, power consumption, and security.
2. Description of the Related Art
The Instruction Set Architecture (ISA) is the liaison between a program and hardware which runs the program. That is, the ISA specification defines the programmer's view of the processor and isolates the programmer from the intricacies of processor design and organization helping him or her to concentrate on developing the software. The ISA specification includes the list of instructions and their formats, number and types of registers used by the instructions, memory addressing modes, virtual memory specification, etc.
The main advantage of the layer of abstraction provided by an ISA is that the same program binaries (object code) can be executed on different physical implementations of the ISA. Conversely, the ISA abstraction gives freedom to the designer of a processor to make significant changes to the physical implementation of the processor, but still making the processor “binary compatible” to existing programs. However, the layer of abstraction provided by the ISA also has some disadvantages.
First, the ISA is often not “expressive” enough to convey the program semantics in an efficient manner. More particularly, the ISA does not do a good job of conveying compile-time/static program analysis information and run-time history information. This information can be potentially used for improving the power, performance, security and reliability of a computing system.
It is often possible to further optimize the code to make the best use of the hardware features available in a specific implementation of the processor. However, recompilation may not be possible when source code of the program is not available, affecting the performance of old binaries.
Yet another problem with the ISA is that it does not allow the program execution history information to be made available to subsequent runs of the program, thus forcing the hardware to rediscover the same information over and over again, some of which could have been avoided and thereby leading to inefficiencies.
Thus, a need exists to address some of the disadvantages of the layer of abstraction provided by the ISA. Preferably, a solution that addresses these disadvantages would also be backward compatible in that it would allow any conventional ISA-compatible machine to be able to continue to execute binary code as it currently does, should the conventional machine not be compatible with the solution for enhancement of performance by addressing current disadvantages of the ISA.